package com.example.hms.controller;
// 控制层，负责处理用户的HTTP请求

import com.example.hms.entity.User;
import com.example.hms.service.UserService; // 导入服务层接口
import com.example.hms.util.Result; // 导入结果封装类
import com.example.hms.util.ResultSubmit; // 导入结果提交封装类
import org.springframework.stereotype.Controller; // Spring MVC控制器注解
import org.springframework.web.bind.annotation.*; // Spring MVC注解包

import javax.annotation.Resource; // 依赖注入注解
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import javax.servlet.http.HttpSession;
import java.util.Map; // 导入Map集合类

// 使用@RestController注解，可以代替@Controller和@ResponseBody，表示这是一个RESTful风格的控制器
@RestController
@RequestMapping("/user") // 控制器的根路径为"/user"
public class UserController {
    // 动态注入下一层级（服务层）
    @Resource
    private UserService userService;

    // 访问路径和请求方式
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public Result login(@RequestBody Map<String, String> map, HttpServletRequest request) {
        // 打印接收到的参数map，用于调试
        System.out.println(map);
        // 从map中获取用户ID
        String userId = map.get("userId");
        // 从map中获取用户密码
        String userPassword = map.get("userPassword");
        // 打印用户ID，用于调试
        System.out.println(userId);
        // 打印用户密码，用于调试（注意：在实际应用中，打印密码是不安全的做法）
        System.out.println(userPassword);

        // 非空判断：检查用户ID和用户密码是否为null或者为空字符串
        // 这里使用了两种方法进行非空判断：
        // 1. 使用.equals("")来判断字符串是否为空
        // 2. 使用.isEmpty()来判断字符串是否为空（这是Java SE 6.0及以上版本的方法）
        if (userId == null || userPassword == null || userId.equals("") || userPassword.isEmpty()) {
            // 如果用户ID或用户密码不全，则返回错误信息
            return ResultSubmit.error("输入参数不全");
        }

        // 如果用户ID和用户密码都不为空，则调用userService的login方法进行登录验证
        return userService.login(userId, userPassword, request);
    }

    //  http://127.0.0.1:8080/user/login2?userId=1&userPassword=111111
    @RequestMapping(value = "/login2", method = RequestMethod.GET)
    public Result login2(String userId, String userPassword, HttpServletRequest request) {
        return userService.login(userId, userPassword, request);
    }

    @RequestMapping(value = "/info", method = RequestMethod.POST)
    public Result info(HttpServletRequest request) {
        return userService.info(request);
    }

    @RequestMapping(value = "/logout", method = RequestMethod.GET)
    public Result logout(HttpServletRequest request) {
        // 获取当前请求的会话，如果不存在，则创建一个新的会话
        HttpSession session = request.getSession();
        // 将token属性设置为null，表示清除token
        session.setAttribute("token", null);
        // 将userId属性设置为null，表示清除用户ID
        session.setAttribute("userId", null);
        return ResultSubmit.success("退出成功了");
    }

    @RequestMapping(value = "/selectAllUser", method = RequestMethod.GET)
    public Result selectAllUser(String userId, String userName, String roleName) {

        return userService.selectAllUser(userId, userName, roleName);
    }

    @RequestMapping(value = "/insert", method = RequestMethod.GET)
    public Result insert(User user, HttpServletRequest request) {

        return userService.insert(user,request);
    }

    @RequestMapping(value = "/update", method = RequestMethod.GET)
    public Result update(User user, HttpServletRequest request) {

        return userService.update(user,request);
    }

    @RequestMapping(value = "/delete", method = RequestMethod.GET)
    public Result delete(String userId, HttpServletRequest request) {

        return userService.delete(userId,request);
    }

}
